"""
    使用opencv控制摄像头
"""
import cv2
import numpy as np

# 使用opencv开启摄像头
CAP1 = cv2.VideoCapture(0)
CAP2 = cv2.VideoCapture(1)
CAP1.set(3, 1280)  # 设置宽
CAP2.set(3, 1280)  # 设置宽


# bgr转换成rgb
def to_rgb(bgr_img):
    return bgr_img[..., [2, 1, 0]]


# 归一化到0至1之间
def normalize(img):
    return img.astype(np.float32) / 255


# 摄像头1主程序
def camera1():
    # cap.set(4, 1080)  # 设置高  似乎没什么用，海康的摄像头只有两种默认视频规格：1280*720、640*480，所以设置cap的宽度即可
    _, imgRaw = CAP1.read()

    imgRaw = cv2.flip(imgRaw, 1)  # 左右互换，这样的话，我们的摄像头就不是左右和我们视觉的左右是相反的了，就像是一面镜子，看着比较舒服。
    h, w = imgRaw.shape[:2]

    # 手部侦测是处理RGB的图片，但是opencv读取到的图片都是BGR的，需要做个转换
    imgRGB = cv2.cvtColor(imgRaw, cv2.COLOR_BGR2RGB)
    # imgRGB = to_rgb(imgRaw)

    # return imgRGB, h, w
    return imgRaw, imgRGB, h, w

    # # 使用 mediapipe 来整手势识别
    # imgProcessed = hand.hand_detect(imgRGB)

    # return imgNorm, h, w

# 摄像头2主程序
def camera2():
    # cap.set(4, 1080)  # 设置高  似乎没什么用，海康的摄像头只有两种默认视频规格：1280*720、640*480，所以设置cap的宽度即可
    _, imgRaw = CAP2.read()

    imgRaw = cv2.flip(imgRaw, 1)  # 左右互换，这样的话，我们的摄像头就不是左右和我们视觉的左右是相反的了，就像是一面镜子，看着比较舒服。
    h, w = imgRaw.shape[:2]

    # 手部侦测是处理RGB的图片，但是opencv读取到的图片都是BGR的，需要做个转换
    imgRGB = cv2.cvtColor(imgRaw, cv2.COLOR_BGR2RGB)
    # imgRGB = to_rgb(imgRaw)

    # return imgRGB, h, w
    return imgRaw, imgRGB, h, w

    # # 使用 mediapipe 来整手势识别
    # imgProcessed = hand.hand_detect(imgRGB)

    # return imgNorm, h, w

# if __name__ == '__main__':
#     _, _, h1, w1 = camera1()
#     _, _, h2, w2 = camera2()

